home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Leser 15 / Amiga Plus Leser CD 15.iso / Tools / Development / CIT.v4 / citra / CITWindow.h < prev   
Encoding:
C/C++ Source or Header  |  2002-03-13  |  4.6 KB  |  183 lines

  1. //
  2. //               CITWindow include
  3. //
  4. //                             StormC
  5. //
  6. //               version 2002.02.25
  7. //
  8.  
  9. #ifndef CIT_CITWINDOW_H
  10. #define CIT_CITWINDOW_H TRUE
  11.  
  12. #include "CITScreen.h"
  13. #include <classes/window.h>
  14. #include <intuition/classusr.h>
  15.  
  16. //
  17. // These enums only for internal use
  18. //
  19. enum
  20. {
  21.   CITWD_POSITION = 0,
  22.   CITWD_POSITION_Y,
  23.   CITWD_WIDTH,
  24.   CITWD_HEIGHT,
  25.   CITWD_LOCKWIDTH,
  26.   CITWD_LOCKHEIGHT,
  27.   CITWD_SHAREDPORT,
  28.   CITWD_APPWINDOW,
  29.   CITWD_APPPORT,
  30.   CITWD_ICONIFYGADGET,
  31.   CITWD_BACKFILLNAME,
  32.   CITWD_MENUSTRIP,
  33.   CITWD_ICONTITLE,
  34.   CITWD_ICON,
  35.   CITWD_GADGETHELP,
  36.   CITWD_CUSTOMSCREEN,
  37.   CITWD_REFWINDOW,
  38.   CITWD_ACTIVATE,
  39.   CITWD_CLOSEGADGET,
  40.   CITWD_DEPTHGADGET,
  41.   CITWD_SIZEGADGET,
  42.   CITWD_DRAGBAR,
  43.   CITWD_BORDERLESS,
  44.   CITWD_BACKDROP,
  45.   CITWD_CAPTION,
  46.   CITWD_SCREENTITLE,
  47.   CITWD_LAST
  48. };
  49.  
  50. class CITWindowClass;
  51. class CITRootClass;
  52. class CITGroup;
  53.  
  54. class CITWindow:public CITScreenClass
  55. {
  56.   public:
  57.     Window*    window;
  58.     Object*    windowObject;
  59.     TTextAttr* defTextAttr;
  60.     TextFont*  defTextFont;
  61.     int        LeftEdge, TopEdge;
  62.     int        Width, Height;
  63.  
  64.     CITWindow();
  65.     ~CITWindow();
  66.  
  67.     void InsObject(CITWindowClass& winClass,BOOL& Err);
  68.     void InsObject(CITWindowClass& winClass,CITRootClass* parent,BOOL& Err);
  69.     void RemObject(CITWindowClass& winClass);
  70.  
  71.     void Align(CITGroup& group1,CITGroup& group2);
  72.     
  73.     void Size(int w, int h);
  74.     void Position(int x, int y);
  75.     void Position(UWORD pos);
  76.     void LockWidth(ULONG w)
  77.       {setTag(CITWD_LOCKWIDTH,WINDOW_LockWidth,w);}
  78.     void LockHeigh(ULONG h)
  79.       {setTag(CITWD_LOCKHEIGHT,WINDOW_LockHeight,h);}
  80.     void AppPort(BOOL b = TRUE)
  81.       {setTag(CITWD_APPPORT,WINDOW_AppPort,b,0);}
  82.     void AppWindow(BOOL b = TRUE)
  83.       {setTag(CITWD_APPWINDOW,WINDOW_AppWindow,b,0);}
  84.     void IconifyGadget(BOOL b = TRUE);
  85.     void BackFillName(char* name)
  86.       {setTag(CITWD_BACKFILLNAME,WINDOW_BackFillName,ULONG(name));}
  87.     void BusyPointer(BOOL b);
  88.     void Zoom(BOOL b);
  89.     void MenuStrip(struct Menu* menu)
  90.       {setTag(CITWD_MENUSTRIP,WINDOW_MenuStrip,ULONG(menu));}
  91.     void IconTitle(char* title)
  92.       {setTag(CITWD_ICONTITLE,WINDOW_IconTitle,ULONG(title));}
  93.     void Icon (struct DiskObject* diskObject)
  94.       {setTag(CITWD_ICON,WINDOW_Icon,ULONG(diskObject));}
  95.     void GadgetHelp(BOOL b = TRUE)
  96.       {setTag(CITWD_GADGETHELP,WINDOW_GadgetHelp,b);}
  97.     void RefWindow(struct Window* win)
  98.       {setTag(CITWD_REFWINDOW,WINDOW_RefWindow,ULONG(win));}
  99.     void Activate(BOOL b = TRUE)
  100.       {setTag(CITWD_ACTIVATE,WA_Activate,b);}
  101.     void CloseGadget(BOOL b =TRUE)
  102.       {setTag(CITWD_CLOSEGADGET,WA_CloseGadget,b);}
  103.     void DepthGadget(BOOL b = TRUE)
  104.       {setTag(CITWD_DEPTHGADGET,WA_DepthGadget,b);}
  105.     void SizeGadget(BOOL b  = TRUE)
  106.       {setTag(CITWD_SIZEGADGET,WA_SizeGadget,b);}
  107.     void DragBar(BOOL b = TRUE)
  108.       {setTag(CITWD_DRAGBAR,WA_DragBar,b);}
  109.     void Borderless(BOOL b = TRUE)
  110.       {setTag(CITWD_BORDERLESS,WA_Borderless,b);}
  111.     void Backdrop(BOOL b = TRUE)
  112.       {setTag(CITWD_BACKDROP,WA_Backdrop,b);}
  113.     void ToFront();
  114.     void ToBack();
  115.     void ScreenTitle(char* title)
  116.       {setTag(CITWD_SCREENTITLE,WA_ScreenTitle,ULONG(title));}
  117.     void Caption(char* title)
  118.       {setTag(CITWD_CAPTION,WA_Title,ULONG(title));}
  119.     void DefaultFont(char* name, short Height, short Width = 0);
  120.  
  121.     BOOL ClosePressed();
  122.     int TextLen(char* t);
  123.  
  124.     // Set user event handlers
  125.     void CloseEventHandler(void (*p)());
  126.     void CloseEventHandler(void* that,void* p);
  127.  
  128.     // Return inner size of window
  129.     virtual int InnerWidth();
  130.     virtual int InnerHeight();
  131.  
  132.   protected:
  133.     virtual void CloseEvent();
  134.     virtual void NewSizeEvent();
  135.     virtual BOOL Create(CITScreen* CITScr);
  136.     virtual void Delete(); 
  137.     virtual void HandleEvent(ULONG Sigs);
  138.     virtual void HandleWindowEvent(ULONG result,UWORD code);
  139.  
  140.   private:
  141.     MsgPort*  wdIDCMP;
  142.     MsgPort*  appPort;
  143.     TTextAttr wdTextAttr;
  144.     TextFont* wdTextFont;
  145.     CITList   eventList;
  146.     CITList   childList;
  147.     CITList*  alignList;
  148.     TagItem*  windowTag;
  149.     ULONG     flags;
  150.  
  151.     void *closeEventThat;
  152.     union
  153.     {
  154.       void (*Proc0)();
  155.       void (*Proc1)(void* that);
  156.     } closeEvent;
  157.     
  158.     void setTag(int index,ULONG attr,ULONG val,BOOL set = TRUE);
  159.     void SetUp();
  160. };
  161.  
  162. class CITWindowClass:public CITNode
  163. {
  164.   public:
  165.     CITWindow* CITWd;
  166.  
  167.     CITWindowClass();
  168.     ~CITWindowClass();
  169.  
  170.   protected:
  171.     friend class CITWindow;
  172.  
  173.     UWORD classID;
  174.     ULONG IDCMPFlags;
  175.     ULONG EventType;
  176.     
  177.     virtual BOOL Create(CITWindow* CITWd,class CITRootClass* parent);
  178.     virtual void Delete();
  179.     virtual void HandleEvent(ULONG result,UWORD code);
  180. };
  181.  
  182. #endif
  183.